pub mod password;
pub mod userpass;
pub mod http;
pub mod command;

pub use password::PasswordAuthenticator;
pub use userpass::UserPassAuthenticator;
pub use http::HttpAuthenticator;
pub use command::CommandAuthenticator;

use async_trait::async_trait;
use std::net::SocketAddr;

#[async_trait]
pub trait Authenticator: Send + Sync {
    async fn authenticate(
        &self,
        addr: &str,
        auth: &str,
    ) -> bool;
}
